package br.com.vendas.menu.importacao;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.List;

import br.com.main.Mapeamento;
import br.com.vendas.dominio.Cliente;
import br.com.vendas.dominio.Filme;
import br.com.vendas.dominio.IEntity;
import br.com.vendas.dominio.Pedido;
import br.com.vendas.dominio.Pessoa;
import br.com.vendas.exception.ArqException;
import br.com.vendas.menu.ItemMenu;


public class ItemImportarDados extends ItemMenu {

	@Override
	public int getId() {
		return 2;
	}

	@Override
	public String getNome() {
		return "Importar Todos Os Dados";
	}

	@Override
	protected void processamento() throws IOException, ArqException {
	    
		addMensagem("Foram Importados os seguintes Dados:");

		//carregar(Categoria.class,"categoria.svrl");
		carregar(Filme.class,"filme.svrl");
		carregar(Pessoa.class,"pessoa.svrl");
		carregar(Cliente.class,"cliente.svrl");
		carregar(Pedido.class,"pedido.svrl");

		exibirMenuPrincipal();
	    			
	}
	
	@SuppressWarnings("unchecked")
	private void carregar(Class<?> classe,String file) throws IOException {
		try {
			ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
			List<IEntity> objs = (List<IEntity>)in.readObject();
			if (objs != null) {
				Mapeamento.refresh(classe.getName(), objs);
				//Mapeamento.mapeamentos.put(,objs);
				in.close();
				addMensagem(classe.getSimpleName() +": "+objs.size() +"\n");
			}
	    } catch (Exception e) {
	    	e.printStackTrace();
	    	throw new IOException(e);
	    }

	}
	
}
